{
    // abstract抽象类的抽象属性和抽象方法是一种规范，继承它的类必须要有它的抽象属性和抽象方法。
    // 抽象类中不仅仅只能有抽象属性和抽象方法,还可以有业务代码。
    // 抽象类中也可以没有抽象属性和抽象方法，但抽象属性和抽象方法必须存在于抽象类中。
    // 抽象类不可以被实例化
    abstract class Animations{
        abstract name: string
        abstract move():void
        protected getPos():{x:number;y:number}{
            return {x:100,y:300}
        }
    }

    class Tank extends Animations{
        name:string = "敌方坦克"
        move():void{
            console.log(`${this.name}正在移动`)
        }
    }

    class Player extends Animations{
        name:string = "玩家"
        move():void{
            console.log(`${this.name}坦克正在移动`)
        }
    }

    const tank = new Tank();
    tank.move();

    const player = new Player();
    player.move();
}